package org.lds.message.center.admin.business.channel.service;

import org.lds.message.center.admin.business.channel.entity.Channel;
import org.lds.message.center.admin.business.channel.model.request.*;
import org.lds.message.center.admin.business.channel.model.response.*;
import org.lds.message.center.common.model.ResultDTO;
import org.lds.message.center.common.model.db.OrderBy;
import org.lds.message.center.common.model.db.PageResult;


/**
 * 基础服务类
 *
 * @author lidongsheng
 * @since 2024-12-22
 */
public interface ChannelBaseService {
    /**
     * 创建
     */
    ResultDTO<ChannelBaseResponse> createChannel(ChannelBaseCreateRequest request);

    /**
     * 批量创建
     */
    ResultDTO<ChannelBaseBatchCreateResponse> batchCreateChannel(ChannelBaseBatchCreateRequest request);

    /**
     * 删除
     */
    ResultDTO<ChannelBaseDeleteResponse> deleteChannel(ChannelBaseDeleteRequest request);

    /**
     * 批量删除
     */
    ResultDTO<ChannelBaseBatchDeleteResponse> batchDeleteChannel(ChannelBaseBatchDeleteRequest request);

    /**
     * 更新
     */
    ResultDTO<ChannelBaseResponse> updateChannel(ChannelBaseUpdateRequest request);

    /**
     * 批量更新
     */
    ResultDTO<ChannelBaseBatchUpdateResponse> batchUpdateChannel(ChannelBaseBatchUpdateRequest request);

    /**
     * 根据ID查询
     */
    ResultDTO<ChannelBaseResponse> getChannelById(ChannelBaseGetByIdRequest request);

    /**
     * 根据ID集合查询
     */
    ResultDTO<ChannelBaseListResponse> getChannelByIds(ChannelBaseGetByIdsRequest request);

    /**
     * 根据业务主键查询
     */
    Channel getChannelByKey(ChannelBaseGetByKeyRequest request);

    /**
     * 查询
     */
    ResultDTO<ChannelBaseListResponse> listChannel(ChannelBaseListRequest request);

    /**
     * 查询所有
     */
    ResultDTO<ChannelBaseListResponse> listAllChannel(OrderBy orderBy);

    /**
     * 分页查询
     */
    ResultDTO<PageResult<ChannelBaseResponse>> listChannelPage(ChannelBaseListPageRequest request);


    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] start ******************************/

    /**
     * 异步批量创建
     */
    ResultDTO<ChannelBaseBatchCreateResponse> batchCreateChannelAsync(ChannelBaseBatchCreateRequest request);

    /**
     * 异步批量删除
     */
    ResultDTO<ChannelBaseBatchDeleteResponse> batchDeleteChannelAsync(ChannelBaseBatchDeleteRequest request);

    /**
     * 异步批量更新
     */
    ResultDTO<ChannelBaseBatchUpdateResponse> batchUpdateChannelAsync(ChannelBaseBatchUpdateRequest request);

    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] end ******************************/
}